itk_module_test()
set(
  ITKQuadEdgeMeshFilteringTests
  itkAutomaticTopologyQuadEdgeMeshSourceTest.cxx
  itkBorderQuadEdgeMeshFilterTest.cxx
  itkBorderQuadEdgeMeshFilterTest2.cxx
  itkBinaryMask3DQuadEdgeMeshSourceTest.cxx
  itkCleanQuadEdgeMeshFilterTest.cxx
  itkDelaunayConformingQuadEdgeMeshFilterTest.cxx
  itkDiscreteGaussianCurvatureQuadEdgeMeshFilterTest.cxx
  itkDiscreteMaximumCurvatureQuadEdgeMeshFilterTest.cxx
  itkDiscreteMeanCurvatureQuadEdgeMeshFilterTest.cxx
  itkDiscreteMinimumCurvatureQuadEdgeMeshFilterTest.cxx
  itkNormalQuadEdgeMeshFilterTest.cxx
  itkParameterizationQuadEdgeMeshFilterTest.cxx
  itkQuadricDecimationQuadEdgeMeshFilterTest.cxx
  itkRegularSphereQuadEdgeMeshSourceTest.cxx
  itkSmoothingQuadEdgeMeshFilterTest.cxx
  itkSquaredEdgeLengthDecimationQuadEdgeMeshFilterTest.cxx
  itkLaplacianDeformationQuadEdgeMeshFilterWithSoftConstraintsTest.cxx
  itkLaplacianDeformationQuadEdgeMeshFilterWithHardConstraintsTest.cxx
)

createtestdriver(ITKQuadEdgeMeshFiltering "${ITKQuadEdgeMeshFiltering-Test_LIBRARIES}"
                 "${ITKQuadEdgeMeshFilteringTests}"
)

set(INPUTDATA ${ITK_DATA_ROOT}/Input)
set(TEMP ${ITK_TEST_OUTPUT_DIR})

itk_add_test(
  NAME
  itkBorderQuadEdgeMeshFilterTest_0_0
  COMMAND
  ITKQuadEdgeMeshFilteringTestDriver
  itkBorderQuadEdgeMeshFilterTest
  DATA{${INPUTDATA}/mushroom.vtk}
  0
  0
  ${TEMP}/border00.vtk
)

itk_add_test(
  NAME
  itkBorderQuadEdgeMeshFilterTest_0_1
  COMMAND
  ITKQuadEdgeMeshFilteringTestDriver
  itkBorderQuadEdgeMeshFilterTest
  DATA{${INPUTDATA}/mushroom.vtk}
  0
  1
  ${TEMP}/border01.vtk
)

itk_add_test(
  NAME
  itkBorderQuadEdgeMeshFilterTest_1_0
  COMMAND
  ITKQuadEdgeMeshFilteringTestDriver
  itkBorderQuadEdgeMeshFilterTest
  DATA{${INPUTDATA}/mushroom.vtk}
  1
  0
  ${TEMP}/border10.vtk
)

itk_add_test(
  NAME
  itkBorderQuadEdgeMeshFilterTest_1_1
  COMMAND
  ITKQuadEdgeMeshFilteringTestDriver
  itkBorderQuadEdgeMeshFilterTest
  DATA{${INPUTDATA}/mushroom.vtk}
  1
  1
  ${TEMP}/border11.vtk
)

itk_add_test(
  NAME
  itkBorderQuadEdgeMeshFilterTest2_0
  COMMAND
  ITKQuadEdgeMeshFilteringTestDriver
  itkBorderQuadEdgeMeshFilterTest2
  0
)

itk_add_test(
  NAME
  itkBorderQuadEdgeMeshFilterTest2_1
  COMMAND
  ITKQuadEdgeMeshFilteringTestDriver
  itkBorderQuadEdgeMeshFilterTest2
  1
)
itk_add_test(
  NAME
  itkSquaredEdgeLengthDecimationQuadEdgeMeshFilterTest
  COMMAND
  ITKQuadEdgeMeshFilteringTestDriver
  itkSquaredEdgeLengthDecimationQuadEdgeMeshFilterTest
  DATA{${INPUTDATA}/mushroom.vtk}
  20
  ${TEMP}/temp_SquaredEdgeLengthDecimationResult1.vtk
)

itk_add_test(
  NAME
  itkSmoothingQuadEdgeMeshFilterTest0
  COMMAND
  ITKQuadEdgeMeshFilteringTestDriver
  itkSmoothingQuadEdgeMeshFilterTest
  DATA{${INPUTDATA}/genusZeroSurface01.vtk}
  10
  0.1
  0
  ${TEMP}/temp_SmoothResult0.vtk
)

itk_add_test(
  NAME
  itkSmoothingQuadEdgeMeshFilterTest1
  COMMAND
  ITKQuadEdgeMeshFilteringTestDriver
  itkSmoothingQuadEdgeMeshFilterTest
  DATA{${INPUTDATA}/genusZeroSurface01.vtk}
  10
  0.1
  1
  ${TEMP}/temp_SmoothResult1.vtk
)

set(
  CURV_TESTS
  Gaussian
  Maximum
  Mean
  Minimum
)
foreach(loop_var ${CURV_TESTS})
  itk_add_test(
      NAME
      itkDiscrete${loop_var}CurvatureQuadEdgeMeshFilterTest
      COMMAND
      ITKQuadEdgeMeshFilteringTestDriver
      itkDiscrete${loop_var}CurvatureQuadEdgeMeshFilterTest
      DATA{${INPUTDATA}/mushroom.vtk}
  )
endforeach()

itk_add_test(
  NAME
  itkDelaunayConformingQuadEdgeMeshFilterTest
  COMMAND
  ITKQuadEdgeMeshFilteringTestDriver
  itkDelaunayConformingQuadEdgeMeshFilterTest
  DATA{${INPUTDATA}/mushroom.vtk}
  ${TEMP}/mushroom_delaunay.vtk
)
itk_add_test(
  NAME
  itkCleanQuadEdgeMeshFilterTest
  COMMAND
  ITKQuadEdgeMeshFilteringTestDriver
  itkCleanQuadEdgeMeshFilterTest
  DATA{${INPUTDATA}/mushroom.vtk}
  0.1
  ${TEMP}/temp_CleanResult1.vtk
)
itk_add_test(
  NAME
  itkQuadricDecimationQuadEdgeMeshFilterTest
  COMMAND
  ITKQuadEdgeMeshFilteringTestDriver
  itkQuadricDecimationQuadEdgeMeshFilterTest
  DATA{${INPUTDATA}/mushroom.vtk}
  100
  ${TEMP}/temp_QuadricDecimationResult1.vtk
)
itk_add_test(
  NAME
  itkQuadEdgeMeshQuadricDecimationTetrahedronTest
  COMMAND
  ITKQuadEdgeMeshFilteringTestDriver
  itkQuadricDecimationQuadEdgeMeshFilterTest
  DATA{${INPUTDATA}/tetrahedron.vtk}
  2
  ${TEMP}/temp_QuadricDecimationTetrahedron.vtk
)
itk_add_test(
  NAME
  itkAutomaticTopologyQuadEdgeMeshSourceTest
  COMMAND
  ITKQuadEdgeMeshFilteringTestDriver
  itkAutomaticTopologyQuadEdgeMeshSourceTest
)
itk_add_test(
  NAME
  itkBinaryMask3DQuadEdgeMeshSourceTest
  COMMAND
  ITKQuadEdgeMeshFilteringTestDriver
  itkBinaryMask3DQuadEdgeMeshSourceTest
)
itk_add_test(
  NAME
  itkRegularSphereQuadEdgeMeshSourceTest
  COMMAND
  ITKQuadEdgeMeshFilteringTestDriver
  itkRegularSphereQuadEdgeMeshSourceTest
  ${ITK_TEST_OUTPUT_DIR}/itkRegularSphereMeshQuadEdgeMeshSourceTest.vtk
)
itk_add_test(
  NAME
  itkNormalQuadEdgeMeshFilterTest0
  COMMAND
  ITKQuadEdgeMeshFilteringTestDriver
  itkNormalQuadEdgeMeshFilterTest
  DATA{${INPUTDATA}/mushroom.vtk}
  0
)
itk_add_test(
  NAME
  itkNormalQuadEdgeMeshFilterTest1
  COMMAND
  ITKQuadEdgeMeshFilteringTestDriver
  itkNormalQuadEdgeMeshFilterTest
  DATA{${INPUTDATA}/mushroom.vtk}
  1
)
itk_add_test(
  NAME
  itkNormalQuadEdgeMeshFilterTest2
  COMMAND
  ITKQuadEdgeMeshFilteringTestDriver
  itkNormalQuadEdgeMeshFilterTest
  DATA{${INPUTDATA}/mushroom.vtk}
  2
)

foreach(area 0 1)
  itk_add_test(
      NAME
      itkLaplacianDeformationQuadEdgeMeshFilterWithSoftConstraintsArea${area}Test
      COMMAND
      ITKQuadEdgeMeshFilteringTestDriver
      itkLaplacianDeformationQuadEdgeMeshFilterWithSoftConstraintsTest
      DATA{${INPUTDATA}/genusZeroSurface01.vtk}
      ${TEMP}/LaplacianDeformationSoftConstraintsOutput_area${area}.vtk
      ${area}
  )
  itk_add_test(
      NAME
      itkLaplacianDeformationQuadEdgeMeshFilterWithHardConstraintsArea${area}Test
      COMMAND
      ITKQuadEdgeMeshFilteringTestDriver
      itkLaplacianDeformationQuadEdgeMeshFilterWithHardConstraintsTest
      DATA{${INPUTDATA}/genusZeroSurface01.vtk}
      ${TEMP}/LaplacianDeformationHardConstraintsOutput_area${area}.vtk
      ${area}
  )
endforeach()

foreach(border 0 1)
  foreach(
    coeff
    0
    1
    2
    3
    4
  )
    foreach(solver 0 1)
      itk_add_test(
              NAME
              itkParameterizationQuadEdgeMeshFilterTestb${border}_c${coeff}_s${solver}
              COMMAND
              ITKQuadEdgeMeshFilteringTestDriver
              itkParameterizationQuadEdgeMeshFilterTest
              DATA{${INPUTDATA}/mushroom.vtk}
              ${border}
              ${coeff}
              ${solver}
              ${TEMP}/param_border${border}_coeff${coeff}_solver${solver}.vtk
      )
    endforeach()
  endforeach()
endforeach()
